public class GongGongQianZhui {
    public static void main(String[] args) {
        String []ss = {"flower","floor","flow","floller"};
        String s = longCommonPrefix(ss);
        System.out.println(s);
    }
    public static String longCommonPrefix(String s1,String s2){
        int length = Math.min(s1.length(),s2.length()); // 取s1和s2字符串长度最小值，按最小长度来看
        int index = 0; // 定义一个指针下标，最开始指向第一个字符，代表第一个字符的下标
        // 当下标值小于最小字符串的长度 且 第一个字符串和第二个字符串同时第某个位置的字符是相同的
        while (index < length && s1.charAt(index) == s2.charAt(index)) {
            index++; // 字符下标后移
        }
        return s1.substring(0,index); // 截取任意一个字符串从0开始到index前一个值间的所有字符，(substring前闭后开)
    }
    public static String longCommonPrefix(String []s){
        if (s == null || s.length == 0) { // 如果字符串数组里什么都没有或者字符串数组是空的
            return ""; // 返回空字符串无最长公共前缀
        }
        String prefix = s[0]; // 取第一个字符串
        for (int i=1;i<s.length;i++){ // 从第二个字符串开始遍历
            prefix = longCommonPrefix(prefix,s[i]); // 将第一个字符串和第二（三四五..剩余字符串）依次比较，返回公共前缀
            if (prefix.length() == 0) { // 如果公共前缀是0，直接退出循环
                break;
            }
        }
        return prefix; // 返回最长公共前缀
    }
}
